import request from '@/utils/request'
// 删除deleteSpu        DELETE /admin/product/deleteSpu/{spuId}
// 新增保存saveSpuInfo   POST /admin/product/saveSpuInfo
// 更改spu信息           POST /admin/product/updateSpuInfo
// 获取分页信息index     GET /admin/product/{page}/{limit}?category3Id=61

// 获取销售属性列表       GET   /admin/product/baseSaleAttrList
// 根据spuId获取图片列表  GET /admin/product/spuImageList/{spuId}
// 根据spuId获取销售属性了表   GET /admin/product/spuSaleAttrList/{ spuId }

export interface SaleAttrModel {
    id: number,
    name: string
}

// 销售属性值
export interface SpuSaleAttrValueModel {
    id?: number, // 回显数据时存在
    spuId?: number, // 回显数据时存在
    saleAttrName?: string, // 回显数据时存在
    isChecked?: null | boolean, // 回显数据时存在
    baseSaleAttrId: number,
    saleAttrValueName: string,
}


// 销售属性
export interface SpuSaleAttrModel {
    id?: number, // 回显数据存在
    spuId?: number, // 回显数据存在
    baseSaleAttrId: number,
    saleAttrName: string,
    spuSaleAttrValueList: SpuSaleAttrValueModel[],
    inputVisible?: boolean,// 用于控制这一行数据中 input的切换
    inputValue?: string,// 用户收集当前输入的属性值，收集号值后再添加到属性值列表中
    // -------------------
    attrIdvalId?: string // 用来收集销售属性id和属性值id
}
export interface SpuImageModel {
    id?: number, // 回显数据携带的
    spuId?: number, // 回显数据携带的
    imgName: string,
    imgUrl: string,
    //  -------------
    name?: string,// upload组件展示使用,必须有name和url两个参数才能展示图片
    url?: string,// upload组件展示使用
    response?: any,// 这个用在前端存储图片交互上
    // ----------------------
    // 设置默认图片使用
    // '0'代表不是默认图片,'1'代表是默认图片
    isDefault?: string
}

export interface SpuModel {
    id?: number,
    spuName: string,
    description: string,
    category3Id: number | undefined,
    tmId: number | undefined,
    spuSaleAttrList: SpuSaleAttrModel[],
    spuImageList: SpuImageModel[],
}

export interface SpuPageModel {
    records: SpuModel[],
    total: number,
    size: number,
    current: number,
    searchCount: boolean,
    pages: number,
}

export default {
    getPage(page: number, limit: number, category3Id: number) {
        return request.get<any, SpuPageModel>(`/admin/product/${page}/${limit}?category3Id=${category3Id}`)
    },
    // 获取销售属性列表
    getSaleAttrList() {
        return request.get<any, SaleAttrModel[]>(`/admin/product/baseSaleAttrList`)
    },
    saveSpu(data: SpuModel) {
        return request.post<any, null>(`/admin/product/saveSpuInfo`, data)
    },
    // 根据spuId获取图片列表
    getSpuImageLIstBySpuId(spuId: number) {
        return request.get<any, SpuImageModel[]>(`/admin/product/spuImageList/${spuId}`)
    },
    // 根据spuId获取销售属性列表
    getSpuSaleAttrListBySpuId(spuId: number) {
        return request.get<any, SpuSaleAttrModel[]>(`/admin/product/spuSaleAttrList/${spuId}`)
    },
    // 更新SPU
    updataSpu(spu: SpuModel) {
        return request.post<any, null>(`/admin/product/updateSpuInfo`, spu)
    },
    // 删除SPU
    deleteSpu(spuId: number) {
      return request.delete<any, null>(`/admin/product/deleteSpu/${spuId}`)
    }
}